The present invention relates generally to a method and apparatus for caching and re-using the checksum associated with outbound data transmitted via a network communication protocol.
Computers may operate in a configuration such as a network, which allows communication between the computers such as transmittal and receipt of data. The Transmission Control Protocol/Internet Protocol (TCP/IP) is a common networking protocol used for communication among computers that allows uniform formatting of data for transmittal and receipt.
It will be appreciated that according to the, xe2x80x9cTransmission Control Protocol DARPA Internet Program Protocol Specification 793,xe2x80x9d September, 1981, a TCP/IP packet is the unit of a transaction between a host computer and another computer connected through a network to the host computer. Computers may be sources and destinations of packets.
The TCP/IP protocol ensures proper transmission of data by including a checksum that allows operations of the receiving computer to verify that the data in the transmitted packet has not changed during transmission. More particularly, a sending computer may operate to determine a checksum that is based on the contents of a packet of data sent and to store this checksum with the packet of data. The receiving computer then may operate to compute the checksum associated with the packet and compare it with the stored checksum to verify that the packet has been received intact. Typically, a checksum is a number that represents the summation of representative values of all the text in a packet that both the sender and the receiver may determine. Therefore, by comparing the checksum stored by the sender to a checksum determined by the receiver, the receiver can verify the data in the transmitted packet.
A checksum may be determined by any means specified by the networking protocol. For example, the checksum specified by the TCP/IP Protocol may be determined by means described in, xe2x80x9cRequest for Comments of the Network Working Group 1071,xe2x80x9d on the website address:cnswww.cns.cwru.edu/net/odds-ends/rfc/rfc1071.
A bit is the smallest unit of measurement in a computer system and generally may either have the value of xe2x80x9conxe2x80x9d or xe2x80x9coff.xe2x80x9d A byte is a unit of data and is typically eight bits in size.
Networking capability is often managed by a networking device such as a computer-compatible networking card that is included in a computer system. Some networking cards have a checksum offload facility that operates to calculate and verify the checksum of each packet. However, this is disadvantageous in that the additional functionality of the networking card is usually supported at additional cost.
Further, many networking cards do not include the checksum functionality and therefore the checksum is determined by the computer system. Disadvantageously, a substantial portion of the computer resources and time required to send and receive TCP/IP packets may be spent in completing operations related to the checksum.
Computers may function as servers for internet or web-based operations. A server is a computer that provides services used by clients such as individual computers thereby facilitating access to internet or web-based information. A server may also provide services to other network attached computers, printers, or other devices. It will be appreciated that the terms xe2x80x9cinternetxe2x80x9d and xe2x80x9cweb-basedxe2x80x9d will be used interchangeably herein and refer to a network architecture that allows different types of computers to uniformly communicate through a network that may include a series of intermediary computers. Thus, the internet enables the sharing of data in a common format among a variety of computers throughout the world.
It will be appreciated that when a computer functions as a web-based server the same data may be transmitted many times to various client computers. Typically the operating system (O.S.) of the server computer may store the most recently used data, such as file system data, in computer memory for potential re-use by other requesting client computers. A current disadvantage is that the checksum associated with the transmitted data must be re-calculated for each TCP/IP transmission, even when the data is unchanged.
The present embodiment is a checksum caching tool that improves the efficiency of the outbound data management for information transmitted over a communication network protocol by eliminating the unnecessary determination of the checksum when the associated data has not changed since the last determination of the checksum. The checksum caching tool operates in a computer system and may be an element of an O.S. Further, when the checksum is determined the checksum caching tool caches the checksum for possible re-use.
More particularly the checksum caching tool improves the efficiency of computing the checksum in a TCP packet for outbound data by re-using the cached checksum when data in the TCP packet that has not been altered. Therefore, the checksum caching tool reduces computer system utilization for computation of the checksum for outbound data.
It will be appreciated that the present embodiment operates on file system data in the file system buffer. However, the present invention is not limited to operation on file system data but may operate on other types of data in a computer system.
Accordingly it is an object of the invention to save computer resources by re-using the checksum for frequently accessed and transmitted data that is re-transmitted without alteration of the data.
Further, the present embodiment advantageously caches the checksum that is derived on the first instance of the transmittal of data. Thereafter, on subsequent transmissions of the data, the cached checksum may be re-used. The valid re-used checksum may be combined with other checksums that are calculated for portions of the checksum that must be computed anew and thereby creates a checksum that represents the aggregate of the data that will be transmitted.
It will be appreciated that the term xe2x80x9ccachexe2x80x9d as used herein is a label for a level of the memory in a computer system that is quickly accessible. Further, the term xe2x80x9ccachexe2x80x9d may also refer to the process of storing information in the memory for re-use. For instance information may be cached in a file system buffer, which may be referred to as xe2x80x9cfile system buffer cachexe2x80x9d or xe2x80x9cbuffer cache.xe2x80x9d
The present embodiment also advantageously reduces the resources required to manage the creation of a checksum to a negligible level. Further, the present embodiment reduces overall computer system costs by eliminating checksum functionality on computer networking cards and thereby minimizing overall checksum functionality requirements in the computer system.
Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.